home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / cli / DiskLED1.2.lha / SysInit.i < prev    next >
Text File  |  2000-09-05  |  2KB  |  73 lines

  1.         Section    Init,Code_P
  2.  
  3. Init_Setup
  4.         Movem.l    d0/a0,-(sp)        ;This section is relased if program was
  5.         Clr.l    ReturnMsg        ;started from shell...
  6.         Sub.l    a1,a1
  7.         CALLEXEC FindTask
  8.         Move.l    d0,a4            ; A4=Task
  9.         Tst.l    Pr_CLI(a4)
  10.         Beq.b    .WBStartUp
  11.         Movem.l    (Sp)+,d0/a0
  12.         Tst.l    Pr_TaskNum(a4)        ; Check If No-Cli or WB
  13.         Bne.b    .Clistartup
  14.         Move.w    #1,Nodosorwb
  15.         Bra.b    .StartUpEnd
  16. .Clistartup
  17.         Lea.l    Dos_Name,a1
  18.         CALLEXEC OldOpenLibrary        ;Open dos.library
  19.         Tst.l    d0
  20.         Beq.l    .StartUpErr        ;Error! Exit!
  21.         Move.l    d0,a6
  22.         Jsr    _LVOOutput(a6)        ;Set standard output
  23.         Move.l    d0,_StdOut
  24.         Jsr    _LVOInput(a6)        ;Set standard input    
  25.         Move.l    d0,_StdIn
  26.  
  27.         Lea.l    Init_Setup(Pc),a0    ; Fetch Segment List first Routine
  28.         Move.l    -(a0),d3        ; Fetch next segment (Main: and forward)
  29.         Clr.l    (a0)            ; Cut first segment from list
  30.         Move.l    #DiskLedName,d1        ; Procedure Name
  31.         Moveq.l    #-10,d2            ; Prioritet
  32.         Move.l    #5120,d4        ; Stack Size
  33.         Jsr    _LVOCreateProc(a6)    ; Startup process
  34.         Moveq.l    #0,d0            ; Clean exit
  35.         Rts
  36.  
  37. .WBStartUp
  38.         Move.l    a4,a1            ; Get Task
  39.         Lea.l    Pr_MsgPort(a4),a0
  40.         CALLEXEC WaitPort
  41.         Lea.l    Pr_MsgPort(a4),a0
  42.         CALLEXEC GetMsg
  43.         Move.l    d0,ReturnMsg
  44.         Movem.l    (Sp)+,d0/a0
  45. .StartUpEnd
  46.         Jsr    Start
  47.         Move.l    d0,-(sp)
  48.         Cmp.w    #1,Nodosorwb
  49.         Beq.b    .Exittodos
  50.         Tst.l    ReturnMsg
  51.         Beq.s    .ExitToDOS
  52.         CALLEXEC Forbid
  53.         Move.l    ReturnMsg,a1
  54.         CALLEXEC ReplyMsg
  55. .ExitToDOS    Move.l    (Sp)+,d0        ;Program exit at WB start
  56.         Rts
  57. .StartUpErr
  58.         Moveq.l    #20,d0            ; Ooops... fail..
  59.         Rts
  60.  
  61.         Even
  62. Version        Dc.b    '$VER: '
  63. DiskLedName    Dc.b    'DiskLED V1.2',0
  64.         Even
  65.  
  66. *******************
  67. _Stdout        Dc.l    0
  68. _Stdin        Dc.l    0
  69. Returnmsg    Dc.l    0
  70. Nodosorwb    Dc.w    0
  71. *******************************************************************************
  72.  
  73.